Previous Book Contents Book Index Next

Inside Macintosh: 3D Graphics Programming With QuickDraw 3D /
Chapter 8 - Light Objects


Summary of Light Objects

C Summary

Constants

Light Types

#define kQ3LightTypeAmbient            Q3_OBJECT_TYPE('a','m','b','n')
#define kQ3LightTypeDirectional        Q3_OBJECT_TYPE('d','r','c','t')
#define kQ3LightTypePoint              Q3_OBJECT_TYPE('p','n','t','l')
#define kQ3LightTypeSpot               Q3_OBJECT_TYPE('s','p','o','t')

Light Attenuation Values

typedef enum TQ3AttenuationType {
   kQ3AttenuationTypeNone,
   kQ3AttenuationTypeInverseDistance,
   kQ3AttenuationTypeInverseDistanceSquared
} TQ3AttenuationType;

Light Fall-Off Values

typedef enum TQ3FallOffType {
   kQ3FallOffTypeNone,
   kQ3FallOffTypeLinear,
   kQ3FallOffTypeExponential,
   kQ3FallOffTypeCosine
} TQ3FallOffType;

Data Types

Light Data Structure

typedef struct TQ3LightData {
   TQ3Boolean                 isOn;
   float                      brightness;
   TQ3ColorRGB                color;
} TQ3LightData;

Directional Light Data Structure

typedef struct TQ3DirectionalLightData {
   TQ3LightData               lightData;
   TQ3Boolean                 castsShadows;
   TQ3Vector3D                direction;
} TQ3DirectionalLightData;

Point Light Data Structure

typedef struct TQ3PointLightData {
   TQ3LightData               lightData;
   TQ3Boolean                 castsShadows;
   TQ3AttenuationType         attenuation;
   TQ3Point3D                 location;
} TQ3PointLightData;

Spot Light Data Structure

typedef struct TQ3SpotLightData {
   TQ3LightData               lightData;
   TQ3Boolean                 castsShadows;
   TQ3AttenuationType         attenuation;
   TQ3Point3D                 location;
   TQ3Vector3D                direction;
   float                      hotAngle;
   float                      outerAngle;
   TQ3FallOffType             fallOff;
} TQ3SpotLightData;

Light Objects Routines

Managing Lights

TQ3ObjectType Q3Light_GetType(TQ3LightObject light);
TQ3Status Q3Light_GetState(TQ3LightObject light, TQ3Boolean *isOn);
TQ3Status Q3Light_SetState(TQ3LightObject light, TQ3Boolean isOn);
TQ3Status Q3Light_GetBrightness (
TQ3LightObject light, float *brightness);
TQ3Status Q3Light_SetBrightness (
TQ3LightObject light, float brightness);
TQ3Status Q3Light_GetColor(TQ3LightObject light, TQ3ColorRGB *color);
TQ3Status Q3Light_SetColor(TQ3LightObject light, 
const TQ3ColorRGB *color);
TQ3Status Q3Light_GetData(TQ3LightObject light, 
TQ3LightData *lightData);
TQ3Status Q3Light_SetData(TQ3LightObject light, 
const TQ3LightData *lightData);

Managing Ambient Light

TQ3LightObject Q3AmbientLight_New (
const TQ3LightData *lightData);
TQ3Status Q3AmbientLight_GetData (
TQ3LightObject light, 
TQ3LightData *lightData);
TQ3Status Q3AmbientLight_SetData (
TQ3LightObject light, 
const TQ3LightData *lightData);

Managing Directional Lights

TQ3LightObject Q3DirectionalLight_New (
const TQ3DirectionalLightData 
*directionalLightData);
TQ3Status Q3DirectionalLight_GetCastShadowsState (
TQ3LightObject light, 
TQ3Boolean *castsShadows);
TQ3Status Q3DirectionalLight_SetCastShadowsState (
TQ3LightObject light, 
TQ3Boolean castsShadows);
TQ3Status Q3DirectionalLight_GetDirection (
TQ3LightObject light, 
TQ3Vector3D *direction);
TQ3Status Q3DirectionalLight_SetDirection (
TQ3LightObject light, 
const TQ3Vector3D *direction);
TQ3Status Q3DirectionalLight_GetData (
TQ3LightObject light, 
TQ3DirectionalLightData *directionalLightData);
TQ3Status Q3DirectionalLight_SetData (
TQ3LightObject light, 
const TQ3DirectionalLightData 
*directionalLightData);

Managing Point Lights

TQ3LightObject Q3PointLight_New(const TQ3PointLightData *pointLightData);
TQ3Status Q3PointLight_GetCastShadowsState (
TQ3LightObject light, 
TQ3Boolean *castsShadows);
TQ3Status Q3PointLight_SetCastShadowsState (
TQ3LightObject light, 
TQ3Boolean castsShadows);
TQ3Status Q3PointLight_GetAttenuation (
TQ3LightObject light, 
TQ3AttenuationType *attenuation);
TQ3Status Q3PointLight_SetAttenuation (
TQ3LightObject light, 
TQ3AttenuationType attenuation);
TQ3Status Q3PointLight_GetLocation (
TQ3LightObject light, 
TQ3Point3D *location);
TQ3Status Q3PointLight_SetLocation (
TQ3LightObject light, 
const TQ3Point3D *location);
TQ3Status Q3PointLight_GetData(TQ3LightObject light, 
TQ3PointLightData *pointLightData);
TQ3Status Q3PointLight_SetData(TQ3LightObject light, 
const TQ3PointLightData *pointLightData);

Managing Spot Lights

TQ3LightObject Q3SpotLight_New(const TQ3SpotLightData *spotLightData);
TQ3Status Q3SpotLight_GetCastShadowsState (
TQ3LightObject light, 
TQ3Boolean *castsShadows);
TQ3Status Q3SpotLight_SetCastShadowsState (
TQ3LightObject light, 
TQ3Boolean castsShadows);
TQ3Status Q3SpotLight_GetAttenuation (
TQ3LightObject light, 
TQ3AttenuationType *attenuation);
TQ3Status Q3SpotLight_SetAttenuation (
TQ3LightObject light, 
TQ3AttenuationType attenuation);
TQ3Status Q3SpotLight_GetLocation (
TQ3LightObject light, 
TQ3Point3D *location);
TQ3Status Q3SpotLight_SetLocation (
TQ3LightObject light, 
const TQ3Point3D *location);
TQ3Status Q3SpotLight_GetDirection (
TQ3LightObject light, 
TQ3Vector3D *direction);
TQ3Status Q3SpotLight_SetDirection (
TQ3LightObject light, 
const TQ3Vector3D *direction);
TQ3Status Q3SpotLight_GetHotAngle (
TQ3LightObject light, float *hotAngle);
TQ3Status Q3SpotLight_SetHotAngle (
TQ3LightObject light, float hotAngle);
TQ3Status Q3SpotLight_GetOuterAngle (
TQ3LightObject light, float *outerAngle);
TQ3Status Q3SpotLight_SetOuterAngle (
TQ3LightObject light, float outerAngle);
TQ3Status Q3SpotLight_GetFallOff (
TQ3LightObject light, 
TQ3FallOffType *fallOff);
TQ3Status Q3SpotLight_SetFallOff (
TQ3LightObject light, 
TQ3FallOffType fallOff);
TQ3Status Q3SpotLight_GetData(TQ3LightObject light, 
TQ3SpotLightData *spotLightData);
TQ3Status Q3SpotLight_SetData(TQ3LightObject light, 
const TQ3SpotLightData *spotLightData);

Notices
kQ3NoticeInvalidAttenuationTypeUsingInternalDefaultsAttenuation type is invalid


Previous Book Contents Book Index Next

© Apple Computer, Inc.
11 JUL 1996